QuickTime 4 API Documentation

3D Graphics Programming with QuickDraw 3D 1.5.4

Previous | QD3D Book | Overview | Chapter Contents

Summary of QuickDraw 3D RAVE

C Summary

Constants

Platform Values
#define kQAMacOS                                    1
#define kQAGeneric                                  2
#define kQAWin32                                    3
Version Values
typedef enum TQAVersion {
    kQAVersion_Prerelease               = 0,
    kQAVersion_1_0                      = 1,
    kQAVersion_1_0_5                    = 2,
    kQAVersion_1_1                      = 3
} TQAVersion;
Pixel Types
typedef enum TQAImagePixelType {
    kQAPixel_Alpha1                     = 0,
    kQAPixel_RGB16                      = 1,
    kQAPixel_ARGB16                     = 2,
    kQAPixel_RGB32                      = 3,
    kQAPixel_ARGB32                     = 4,
    kQAPixel_CL4                        = 5,
    kQAPixel_CL8                        = 6,
    kQAPixel_RGB16_565                  = 7,
    kQAPixel_RGB24                      = 8
} TQAImagePixelType;
Color Lookup Table Types
typedef enum TQAColorTableType {
    kQAColorTable_CL8_RGB32             = 0,
    kQAColorTable_CL4_RGB32             = 1
} TQAColorTableType;
Device Types
typedef enum TQADeviceType {
    kQADeviceMemory                     = 0,
    kQADeviceGDevice                    = 1,
    kQADeviceWin32DC                    = 2,
    kQADeviceDDSurface                  = 3
} TQADeviceType;
Clip Types
typedef enum TQAClipType {
    kQAClipRgn                          = 0,
    kQAClipWin32Rgn                     = 1
} TQAClipType;
Tags for State Variables
typedef enum TQATagInt {
    kQATag_ZFunction                    = 0,        /*required variables*/
    kQATag_Antialias                    = 8,        /*optional variables*/
    kQATag_Blend                        = 9,
    kQATag_PerspectiveZ                 = 10,
    kQATag_TextureFilter                = 11,
    kQATag_TextureOp                    = 12,
    kQATag_CSGTag                       = 14,
    kQATag_CSGEquation                  = 15,
    kQATag_BufferComposite              = 16,
    kQATagGL_DrawBuffer                 = 100,      /*OpenGL variables*/
    kQATagGL_TextureWrapU               = 101,
    kQATagGL_TextureWrapV               = 102,
    kQATagGL_TextureMagFilter           = 103,
    kQATagGL_TextureMinFilter           = 104,
    kQATagGL_ScissorXMin                = 105,
    kQATagGL_ScissorYMin                = 106,
    kQATagGL_ScissorXMax                = 107,
    kQATagGL_ScissorYMax                = 108,
    kQATagGL_BlendSrc                   = 109,
    kQATagGL_BlendDst                   = 110,
    kQATagGL_LinePattern                = 111,
    kQATagGL_AreaPattern0               = 117,
    kQATagGL_AreaPattern31              = 148,
    kQATag_EngineSpecific_Minimum       = 1000
} TQATagInt;
typedef enum TQATagFloat {
    kQATag_ColorBG_a                    = 1,        /*required variables*/
    kQATag_ColorBG_r                    = 2,
    kQATag_ColorBG_g                    = 3,
    kQATag_ColorBG_b                    = 4,
    kQATag_Width                        = 5,
    kQATag_ZMinOffset                   = 6,
    kQATag_ZMinScale                    = 7,
    kQATagGL_DepthBG                    = 112,      /*OpenGL variables*/
    kQATagGL_TextureBorder_a            = 113,
    kQATagGL_TextureBorder_r            = 114,
    kQATagGL_TextureBorder_g            = 115,
    kQATagGL_TextureBorder_b            = 116
} TQATagFloat;
typedef enum TQATagPtr {
    kQATag_Texture                      = 13
} TQATagPtr;
Z Sorting Function Selectors
/*values for kQATag_ZFunction*/
#define kQAZFunction_None                           0
#define kQAZFunction_LT                             1
#define kQAZFunction_EQ                             2
#define kQAZFunction_LE                             3
#define kQAZFunction_GT                             4
#define kQAZFunction_NE                             5
#define kQAZFunction_GE                             6
#define kQAZFunction_True                           7
Antialiasing Selectors
/*values for kQATag_Antialias*/
#define kQAAntiAlias_Off                            0
#define kQAAntiAlias_Fast                           1
#define kQAAntiAlias_Mid                            2
#define kQAAntiAlias_Best                           3
Blending Operations
/*values for kQATag_Blend*/
#define kQABlend_PreMultiply                        0
#define kQABlend_Interpolate                        1
#define kQABlend_OpenGL                             2
Z Perspective Selectors
/*values for kQATag_PerspectiveZ*/
#define kQAPerspectiveZ_Off                         0
#define kQAPerspectiveZ_On                          1
Texture Filter Selectors
/*values for kQATag_TextureFilter*/
#define kQATextureFilter_Fast                       0
#define kQATextureFilter_Mid                        1
#define kQATextureFilter_Best                       2
Texture Operations
/*masks for kQATag_TextureOp*/
#define kQATextureOp_None                           0
#define kQATextureOp_Modulate                       (1 << 0)
#define kQATextureOp_Highlight                      (1 << 1)
#define kQATextureOp_Decal                          (1 << 2)
#define kQATextureOp_Shrink                         (1 << 3)
CSG IDs
/*values for kQATag_CSGTag*/
#define kQACSGTag_None                              0xffffffffUL
#define kQACSGTag_0                                 0
#define kQACSGTag_1                                 1
#define kQACSGTag_2                                 2
#define kQACSGTag_3                                 3
#define kQACSGTag_4                                 4
Buffer Compositing Modes
#define kQABufferComposite_None                     0
#define kQABufferComposite_PreMultiply              1
#define kQABufferComposite_Interpolate              2
Texture Wrapping Values
/*values for kQATagGL_TextureWrapU and kQATagGL_TextureWrapV*/
#define kQAGL_Repeat                                0
#define kQAGL_Clamp                                 1
Source Blending Values
/*values for kQATagGL_BlendSrc*/
#define kQAGL_SourceBlend_XXX                       0
Destination Blending Values
/*values for kQATagGL_BlendDst*/
#define kQAGL_DestBlend_XXX                         0
Buffer Drawing Operations
/*masks for kQATagGL_DrawBuffer*/
#define kQAGL_DrawBuffer_None                       0
#define kQAGL_DrawBuffer_FrontLeft                  (1 << 0)
#define kQAGL_DrawBuffer_FrontRight                 (1 << 1)
#define kQAGL_DrawBuffer_BackLeft                   (1 << 2)
#define kQAGL_DrawBuffer_BackRight                  (1 << 3)
#define kQAGL_DrawBuffer_Front                      \
                            (kQAGL_DrawBuffer_FrontLeft | kQAGL_DrawBuffer_FrontRight)
#define kQAGL_DrawBuffer_Back                       \
                            (kQAGL_DrawBuffer_BackLeft | kQAGL_DrawBuffer_BackRight)
Line and Point Widths
/*values for kQATag_Width*/
#define kQAMaxWidth                                 128.0
Vertex Modes
typedef enum TQAVertexMode {
    kQAVertexMode_Point                 = 0,
    kQAVertexMode_Line                  = 1,
    kQAVertexMode_Polyline              = 2,
    kQAVertexMode_Tri                   = 3,
    kQAVertexMode_Strip                 = 4,
    kQAVertexMode_Fan                   = 5,
    kQAVertexMode_NumModes              = 6
} TQAVertexMode;
Gestalt Selectors
typedef enum TQAGestaltSelector {
    kQAGestalt_OptionalFeatures         = 0,
    kQAGestalt_FastFeatures             = 1,
    kQAGestalt_VendorID                 = 2,
    kQAGestalt_EngineID                 = 3,
    kQAGestalt_Revision                 = 4,
    kQAGestalt_ASCIINameLength          = 5,
    kQAGestalt_ASCIIName                = 6,
    kQAGestalt_TextureMemory            = 7,
    kQAGestalt_FastTextureMemory        = 8,
    kQAGestalt_NumSelectors             = 9
} TQAGestaltSelector;
Gestalt Optional Features Response Masks
#define kQAOptional_None                            0
#define kQAOptional_DeepZ                           (1 << 0)
#define kQAOptional_Texture                         (1 << 1)
#define kQAOptional_TextureHQ                       (1 << 2)
#define kQAOptional_TextureColor                    (1 << 3)
#define kQAOptional_Blend                           (1 << 4)
#define kQAOptional_BlendAlpha                      (1 << 5)
#define kQAOptional_Antialias                       (1 << 6)
#define kQAOptional_ZSorted                         (1 << 7)
#define kQAOptional_PerspectiveZ                    (1 << 8)
#define kQAOptional_OpenGL                          (1 << 9)
#define kQAOptional_NoClear                         (1 << 10)
#define kQAOptional_CSG                             (1 << 11)
#define kQAOptional_BoundToDevice                   (1 << 12)
#define kQAOptional_CL4                             (1 << 13)
#define kQAOptional_CL8                             (1 << 14)
#define kQAOptional_BufferComposite                 (1 << 15)
Gestalt Fast Features Response Masks
#define kQAFast_None                                0
#define kQAFast_Line                                (1 << 0)
#define kQAFast_Gouraud                             (1 << 1)
#define kQAFast_Texture                             (1 << 2)
#define kQAFast_TextureHQ                           (1 << 3)
#define kQAFast_Blend                               (1 << 4)
#define kQAFast_Antialiasing                        (1 << 5)
#define kQAFast_ZSorted                             (1 << 6)
#define kQAFast_CL4                                 (1 << 7)
#define kQAFast_CL8                                 (1 << 8)
Vendor and Engine IDs
#define kQAVendor_BestChoice                        (-1)
#define kQAVendor_Apple                             0
#define kQAVendor_ATI                               1
#define kQAVendor_Radius                            2
#define kQAVendor_Mentor                            3
#define kQAVendor_Matrox                            4
#define kQAVendor_Yarc                              5
#define kQAVendor_DiamondMM                         6
#define kQAEngine_AppleSW                           0
#define kQAEngine_AppleHW                           (-1)
#define kQAEngine_AppleHW2                          1
Triangle Flags Masks
#define kQATriFlags_None                            0
#define kQATriFlags_Backfacing                      (1 << 0)
Texture Flags Masks
#define kQATexture_None                             0
#define kQATexture_Lock                             (1 << 0)
#define kQATexture_Mipmap                           (1 << 1)
#define kQATexture_NoCompression                    (1 << 2)
#define kQATexture_HighCompression                  (1 << 3)
Bitmap Flags Masks
#define kQABitmap_None                              0
#define kQABitmap_Lock                              (1 << 1)
#define kQABitmap_NoCompression                     (1 << 2)
#define kQABitmap_HighCompression                   (1 << 3)
Draw Context Flags Masks
#define kQAContext_None                             0
#define kQAContext_NoZBuffer                        (1 << 0)
#define kQAContext_DeepZ                            (1 << 1)
#define kQAContext_DoubleBuffer                     (1 << 2)
#define kQAContext_Cache                            (1 << 3)
Drawing Engine Method Selectors
typedef enum TQAEngineMethodTag {
    kQADrawPrivateNew                               = 0,
    kQADrawPrivateDelete                            = 1,
    kQAEngineCheckDevice                            = 2,
    kQAEngineGestalt                                = 3,
    kQATextureNew                                   = 4,
    kQATextureDetach                                = 5,
    kQATextureDelete                                = 6,
    kQABitmapNew                                    = 7,
    kQABitmapDetach                                 = 8,
    kQABitmapDelete                                 = 9,
    kQAColorTableNew                                = 10,
    kQAColorTableDelete                             = 11,
    kQATextureBindColorTable                        = 12,
    kQABitmapBindColorTable                         = 13
} TQAEngineMethodTag;
Public Draw Context Method Selectors
typedef enum TQADrawMethodTag {
    kQASetFloat                                     = 0,
    kQASetInt                                       = 1,
    kQASetPtr                                       = 2,
    kQAGetFloat                                     = 3,
    kQAGetInt                                       = 4,
    kQAGetPtr                                       = 5,
    kQADrawPoint                                    = 6,
    kQADrawLine                                     = 7,
    kQADrawTriGouraud                               = 8,
    kQADrawTriTexture                               = 9,
    kQADrawVGouraud                                 = 10,
    kQADrawVTexture                                 = 11,
    kQADrawBitmap                                   = 12,
    kQARenderStart                                  = 13,
    kQARenderEnd                                    = 14,
    kQARenderAbort                                  = 15,
    kQAFlush                                        = 16,
    kQASync                                         = 17,
    kQASubmitVerticesGouraud                        = 18,
    kQASubmitVerticesTexture                        = 19,
    kQADrawTriMeshGouraud                           = 20,
    kQADrawTriMeshTexture                           = 21,
    kQASetNoticeMethod                              = 22,
    kQAGetNoticeMethod                              = 23
} TQADrawMethodTag;
Notice Method Selectors
typedef enum TQAMethodSelector {
    kQAMethod_RenderCompletion                      = 0,
    kQAMethod_DisplayModeChanged                    = 1
    kQAMethod_ReloadTextures                        = 2,
    kQAMethod_BufferInitialize                      = 3,
    kQAMethod_BufferComposite                       = 4,
    kQAMethod_NumSelectors                          = 5
} TQAMethodSelector;

Data Types

Basic Data Types
typedef struct TQAEngine                            TQAEngine;
typedef struct TQATexture                           TQATexture;
typedef struct TQABitmap                            TQABitmap;
typedef struct TQAColorTable                        TQAColorTable;
typedef struct TQADrawPrivate                       TQADrawPrivate;
Memory Device Structure
typedef struct TQADeviceMemory {
    long                                rowBytes;
    TQAImagePixelType                   pixelType;
    long                                width;
    long                                height;
    void                                *baseAddr;
} TQADeviceMemory;
Rectangle Structure
typedef struct TQARect {
    long                                left;
    long                                right;
    long                                top;
    long                                bottom;
} TQARect;
Macintosh Device and Clip Structures
typedef union TQAPlatformDevice {
    TQADeviceMemory                     memoryDevice;
    GDHandle                            gDevice;
} TQAPlatformDevice;
typedef union TQAPlatformClip {
    RgnHandle                           clipRgn;
} TQAPlatformClip;
Windows Device and Clip Structures
typedef union TQAPlatformDevice {
    TQADeviceMemory                     memoryDevice;
    HDC                                 hdc;
    struct {
        LPDIRECTDRAW                    lpDirectDraw;
        LPDIRECTDRAWSURFACE             lpDirectDrawSurface;
    };
} TQAPlatformDevice;
typedef union TQAPlatformClip {
    HRGN                                clipRgn;
} TQAPlatformClip
Generic Device and Clip Structures
typedef union TQAPlatformDevice {
    TQADeviceMemory                     memoryDevice;
} TQAPlatformDevice;
typedef union TQAPlatformClip {
    void                                *region;
} TQAPlatformClip;
Device Structure
typedef struct TQADevice {
    TQADeviceType                       deviceType;
    TQAPlatformDevice                   device;
} TQADevice;
Clip Data Structure
typedef struct TQAClip {
    TQAClipType                         clipType;
    TQAPlatformClip                     clip;
} TQAClip;
Image Structure
struct TQAImage {
    long                                width;
    long                                height;
    long                                rowBytes;
    void                                *pixmap;
};
typedef struct TQAImage TQAImage;
Vertex Structures
typedef struct TQAVGouraud {
    float                               x;
    float                               y;
    float                               z;
    float                               invW;
    float                               r;
    float                               g;
    float                               b;
    float                               a;
} TQAVGouraud;
typedef struct TQAVTexture {
    float                               x;
    float                               y;
    float                               z;
    float                               invW;
    float                               r;
    float                               g;
    float                               b;
    float                               a;
    float                               uOverW;
    float                               vOverW;
    float                               kd_r;
    float                               kd_g;
    float                               kd_b;
    float                               ks_r;
    float                               ks_g;
    float                               ks_b;
} TQAVTexture;
Draw Context Structure
struct TQADrawContext {
    TQADrawPrivate                      *drawPrivate;
    const TQAVersion                    version;
    TQASetFloat                         setFloat;
    TQASetInt                           setInt;
    TQASetPtr                           setPtr;
    TQAGetFloat                         getFloat;
    TQAGetInt                           getInt;
    TQAGetPtr                           getPtr;
    TQADrawPoint                        drawPoint;
    TQADrawLine                         drawLine;
    TQADrawTriGouraud                   drawTriGouraud;
    TQADrawTriTexture                   drawTriTexture;
    TQADrawVGouraud                     drawVGouraud;
    TQADrawVTexture                     drawVTexture;
    TQADrawBitmap                       drawBitmap;
    TQARenderStart                      renderStart;
    TQARenderEnd                        renderEnd;
    TQARenderAbort                      renderAbort;
    TQAFlush                            flush;
    TQASync                             sync;
    TQASubmitVerticesGouraud            submitVerticesGouraud;
    TQASubmitVerticesTexture            submitVerticesTexture;
    TQADrawTriMeshGouraud               drawTriMeshGouraud;
    TQADrawTriMeshTexture               drawTriMeshTexture;
    TQASetNoticeMethod                  setNoticeMethod;
    TQAGetNoticeMethod                  getNoticeMethod;
};
typedef struct TQADrawContext TQADrawContext;
Drawing Engine Methods Union
typedef union TQAEngineMethod {
    TQADrawPrivateNew                   drawPrivateNew;
    TQADrawPrivateDelete                drawPrivateDelete;
    TQAEngineCheckDevice                engineCheckDevice;
    TQAEngineGestalt                    engineGestalt;
    TQATextureNew                       textureNew;
    TQATextureDetach                    textureDetach;
    TQATextureDelete                    textureDelete;
    TQABitmapNew                        bitmapNew;
    TQABitmapDetach                     bitmapDetach;
    TQABitmapDelete                     bitmapDelete;
    TQAColorTableNew                    colorTableNew;
    TQAColorTableDelete                 colorTableDelete;
    TQATextureBindColorTable            textureBindColorTable;
    TQABitmapBindColorTable             bitmapBindColorTable;
} TQAEngineMethod;
Public Draw Context Methods Union
typedef union TQADrawMethod {
    TQASetFloat                         setFloat;
    TQASetInt                           setInt;
    TQASetPtr                           setPtr;
    TQAGetFloat                         getFloat;
    TQAGetInt                           getInt;
    TQAGetPtr                           getPtr;
    TQADrawPoint                        drawPoint;
    TQADrawLine                         drawLine;
    TQADrawTriGouraud                   drawTriGouraud;
    TQADrawTriTexture                   drawTriTexture;
    TQADrawVGouraud                     drawVGouraud;
    TQADrawVTexture                     drawVTexture;
    TQADrawBitmap                       drawBitmap;
    TQARenderStart                      renderStart;
    TQARenderEnd                        renderEnd;
    TQARenderAbort                      renderAbort;
    TQAFlush                            flush;
    TQASync                             sync;
    TQASubmitVerticesGouraud            submitVerticesGouraud;
    TQASubmitVerticesTexture            submitVerticesTexture;
    TQADrawTriMeshGouraud               drawTriMeshGouraud;
    TQADrawTriMeshTexture               drawTriMeshTexture;
    TQASetNoticeMethod                  setNoticeMethod;
    TQAGetNoticeMethod                  getNoticeMethod;
} TQADrawMethod;
Indexed Triangle Structure
typedef struct TQAIndexedTriangle {
    unsigned long                       triangleFlags;
    unsigned long                       vertices[3];
} TQAIndexedTriangle;
Notice Methods
typedef union TQANoticeMethod {
    TQAStandardNoticeMethod             standardNoticeMethod;
    TQABufferNoticeMethod               bufferNoticeMethod;
} TQANoticeMethod;

QuickDraw 3D RAVE Routines

Creating and Deleting Draw Contexts
TQAError QADrawContextNew (const TQADevice *device, const TQARect *rect, const TQAClip *clip, const TQAEngine *engine, unsigned long flags, TQADrawContext **newDrawContext);
void QADrawContextDelete (TQADrawContext *drawContext);
Creating and Deleting Color Lookup Tables
TQAError QAColorTableNew (const TQAEngine *engine, TQAColorTableType tableType, void *pixelData, long transparentIndexFlag, TQAColorTable **newTable);
void QAColorTableDelete (const TQAEngine *engine, TQAColorTable *colorTable);
Manipulating Textures and Bitmaps
TQAError QATextureNew (const TQAEngine *engine, unsigned long flags, TQAImagePixelType pixelType, const TQAImage images[], TQATexture **newTexture);
TQAError QATextureDetach (const TQAEngine *engine, TQATexture *texture);
TQAError QATextureBindColorTable (const TQAEngine *engine, TQATexture *texture, TQAColorTable *colorTable);
void QATextureDelete (const TQAEngine *engine, TQATexture *texture);
TQAError QABitmapNew (const TQAEngine *engine, unsigned long flags, TQAImagePixelType pixelType, const TQAImage *image, TQABitmap **newBitmap);
TQAError QABitmapDetach (const TQAEngine *engine, TQABitmap *bitmap);
TQAError QABitmapBindColorTable (const TQAEngine *engine, TQABitmap *bitmap, TQAColorTable *colorTable);
void QABitmapDelete (const TQAEngine *engine, TQABitmap *bitmap);
Managing Drawing Engines
TQAEngine *QADeviceGetFirstEngine (const TQADevice *device);
TQAEngine *QADeviceGetNextEngine (const TQADevice *device, const TQAEngine *currentEngine);
TQAError QAEngineCheckDevice (const TQAEngine *engine, const TQADevice *device);
TQAError QAEngineGestalt (const TQAEngine *engine, TQAGestaltSelector selector, void *response);
TQAError QAEngineEnable (long vendorID, long engineID);
TQAError QAEngineDisable (long vendorID, long engineID);
Manipulating Draw Contexts
#define QAGetFloat(drawContext,tag) \
                            (drawContext)->getFloat (drawContext,tag)
#define QASetFloat(drawContext,tag,newValue) \
                            (drawContext)->setFloat (drawContext,tag,newValue)
#define QAGetInt(drawContext,tag) \
                            (drawContext)->getInt (drawContext,tag)
#define QASetInt(drawContext,tag,newValue) \
                            (drawContext)->setInt (drawContext,tag,newValue)
#define QAGetPtr(drawContext,tag) \
                            (drawContext)->getPtr (drawContext,tag)
#define QASetPtr(drawContext,tag,newValue) \
                            (drawContext)->setPtr (drawContext,tag,newValue)
#define QADrawPoint(drawContext,v) \
                            (drawContext)->drawPoint (drawContext,v)
#define QADrawLine(drawContext,v0,v1) \
                            (drawContext)->drawLine (drawContext,v0,v1)
#define QADrawTriGouraud(drawContext,v0,v1,v2,flags) \
                    (drawContext)->drawTriGouraud (drawContext,v0,v1,v2,flags)
#define QADrawTriTexture(drawContext,v0,v1,v2,flags) \
                    (drawContext)->drawTriTexture (drawContext,v0,v1,v2,flags)
#define QASubmitVerticesGouraud(drawContext,nVertices,vertices) \
                (drawContext)->submitVerticesGouraud(drawContext,nVertices,vertices)
#define QASubmitVerticesTexture(drawContext,nVertices,vertices) \
                (drawContext)->submitVerticesTexture(drawContext,nVertices,vertices)
#define QADrawTriMeshGouraud(drawContext,nTriangle,triangles) \
                (drawContext)->drawTriMeshGouraud (drawContext,nTriangle,triangles)
#define QADrawTriMeshTexture(drawContext,nTriangle,triangles) \
                (drawContext)->drawTriMeshTexture (drawContext,nTriangle,triangles)
#define QADrawVGouraud(drawContext,nVertices,vertexMode,vertices,flags) \(drawContext)->drawVGouraud
(drawContext,nVertices,vertexMode,vertices,flags)
#define QADrawVTexture(drawContext,nVertices,vertexMode,vertices,flags) \
(drawContext)->drawVTexture (drawContext,nVertices,vertexMode,vertices,flags)
#define QADrawBitmap(drawContext,v,bitmap) \
                            (drawContext)->drawBitmap (drawContext,v,bitmap)
#define QARenderStart(drawContext,dirtyRect,initialContext) \
            (drawContext)->renderStart (drawContext,dirtyRect,initialContext)
#define QARenderEnd(drawContext,modifiedRect) \
                            (drawContext)->renderEnd (drawContext,modifiedRect)
#define QARenderAbort(drawContext) (drawContext)->renderAbort (drawContext)
#define QAFlush(drawContext) (drawContext)->flush (drawContext)
#define QASync(drawContext) (drawContext)->sync (drawContext)
#define QAGetNoticeMethod(drawContext, method, completionCallBack, refCon) \
    (drawContext)->getNoticeMethod (drawContext, method, completionCallBack, refCon)
#define QASetNoticeMethod(drawContext, method, completionCallBack, refCon) \
    (drawContext)->setNoticeMethod (drawContext, method, completionCallBack, refCon)
Registering a Custom Drawing Engine
TQAError QARegisterEngine (TQAEngineGetMethod engineGetMethod);
TQAError QARegisterDrawMethod (TQADrawContext *drawContext, TQADrawMethodTag methodTag, TQADrawMethod method);

Application-Defined Routines

Public Draw Context Methods
typedef float (*TQAGetFloat) (const TQADrawContext *drawContext, TQATagFloat tag);
typedef void (*TQASetFloat) (TQADrawContext *drawContext, TQATagFloat tag, float newValue);
typedef unsigned long (*TQAGetInt) (const TQADrawContext *drawContext, TQATagInt tag);
typedef void (*TQASetInt) (TQADrawContext *drawContext, TQATagInt tag, unsigned long newValue);
typedef void *(*TQAGetPtr) (const TQADrawContext *drawContext, TQATagPtr tag);
typedef void (*TQASetPtr) (TQADrawContext *drawContext, TQATagPtr tag, const void *newValue);
typedef void (*TQADrawPoint) (const TQADrawContext *drawContext, const TQAVGouraud *v);
typedef void (*TQADrawLine) (const TQADrawContext *drawContext, const TQAVGouraud *v0, const TQAVGouraud *v1);
typedef void (*TQADrawTriGouraud) (const TQADrawContext *drawContext, const TQAVGouraud *v0, const TQAVGouraud *v1, const TQAVGouraud *v2, unsigned long flags);
typedef void (*TQADrawTriTexture) (const TQADrawContext *drawContext, const TQAVTexture *v0, const TQAVTexture *v1, const TQAVTexture *v2, unsigned long flags);
typedef void (*TQASubmitVerticesGouraud) ( const TQADrawContext *drawContext, unsigned long nVertices, const TQAVGouraud *vertices);
typedef void (*TQASubmitVerticesTexture) ( const TQADrawContext *drawContext, unsigned long nVertices, const TQAVTexture *vertices);
typedef void (*TQADrawTriMeshGouraud) ( const TQADrawContext *drawContext, unsigned long nTriangles, const TQAIndexedTriangle *triangles);
typedef void (*TQADrawTriMeshTexture) ( const TQADrawContext *drawContext, unsigned long nTriangles, const TQAIndexedTriangle *triangles);
typedef void (*TQADrawVGouraud) (const TQADrawContext *drawContext, unsigned long nVertices, TQAVertexMode vertexMode, const TQAVGouraud vertices[], const unsigned long flags[]);
typedef void (*TQADrawVTexture) (const TQADrawContext *drawContext, unsigned long nVertices, TQAVertexMode vertexMode, const TQAVTexture vertices[], const unsigned long flags[]);
typedef void (*TQADrawBitmap) (const TQADrawContext *drawContext, const TQAVGouraud *v, TQABitmap *bitmap);
typedef void (*TQARenderStart) (const TQADrawContext *drawContext, const TQARect *dirtyRect, const TQADrawContext *initialContext);
typedef TQAError (*TQARenderEnd) (const TQADrawContext *drawContext, const TQARect *modifiedRect);
typedef TQAError (*TQARenderAbort) (const TQADrawContext *drawContext);
typedef TQAError (*TQAFlush) (const TQADrawContext *drawContext);
typedef TQAError (*TQASync) (const TQADrawContext *drawContext);
typedef TQAError (*TQAGetNoticeMethod) ( const TQADrawContext *drawContext, TQAMethodSelector method, TQANoticeMethod *completionCallBack, void **refCon);
typedef TQAError (*TQASetNoticeMethod) ( const TQADrawContext *drawContext, TQAMethodSelector method, TQANoticeMethod completionCallBack, void *refCon);
Private Draw Context Methods
typedef TQAError (*TQADrawPrivateNew) ( TQADrawContext *newDrawContext, const TQADevice *device, const TQARect *rect, const TQAClip *clip, unsigned long flags);
typedef void (*TQADrawPrivateDelete) ( TQADrawPrivate *drawPrivate);
typedef TQAError (*TQAEngineCheckDevice) ( const TQADevice *device);
typedef TQAError (*TQAEngineGestalt) ( TQAGestaltSelector selector, void *response);
Color Lookup Table Methods
typedef TQAError (*TQAColorTableNew)( TQAColorTableType pixelType, void *pixelData, long transparentIndex, TQAColorTable **newTable);
typedef void (*TQAColorTableDelete) ( TQAColorTable *colorTable);
Texture and Bitmap Methods
typedef TQAError (*TQATextureNew) (unsigned long flags, TQAImagePixelType pixelType, const TQAImage images[], TQATexture **newTexture);
typedef TQAError (*TQATextureDetach) ( TQATexture *texture);
typedef TQAError (*TQATextureBindColorTable) ( TQATexture *texture, TQAColorTable *colorTable);
typedef void (*TQATextureDelete) (TQATexture *texture);
typedef TQAError (*TQABitmapNew) (unsigned long flags, TQAImagePixelType pixelType, const TQAImage *image, TQABitmap **newBitmap);
typedef TQAError (*TQABitmapDetach) ( TQABitmap *bitmap);
typedef TQAError (*TQABitmapBindColorTable) ( TQABitmap *bitmap, TQAColorTable *colorTable);
typedef void (*TQABitmapDelete) (TQABitmap *bitmap);
Method Reporting Methods
typedef TQAError (*TQAEngineGetMethod) ( TQAEngineMethodTag methodTag, TQAEngineMethod *method);
Notice Methods
typedef void (*TQAStandardNoticeMethod) (const TQADrawContext *drawContext, void *refCon);
typedef void (*TQABufferNoticeMethod) (const TQADrawContext *drawContext, const TQADevice *buffer, const TQARect *dirtyRect, void *refCon);

Result Codes

kQANoErr

0

No error

kQAError

1

Generic error code

kQAOutOfMemory

2

Insufficient memory for requested operation

kQANotSupported

3

Requested feature is not supported

kQAOutOfDate

4

A newer drawing engine was registered

kQAParamErr

5

Invalid parameter

kQAGestaltUnknown

6

Requested Gestalt type isn't available

kQADisplayModeUnsupported

7

Engine cannot render to the display in its current mode

 


© 1997 Apple Computer, Inc.

Previous | QD3D Book | Overview | Chapter Contents